iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
Modern Web

走入前端,才從0開始數,初學者歷程系列 第 10

day10-CSS Animation動畫實作篇

  • 分享至 

  • xImage
  •  

哇嗚!終於第十天了,經歷三分之一的鐵人賽了((覺得有點小開心d(`・∀・)b

今天就來把昨天分享的:嘿Animation就是CSS動畫,說好要做炫砲動畫的一日練習放上來,(我是覺得蠻炫砲的,畢竟新手的我會覺得什麼都很酷XD)

這個是今日所做的:https://codepen.io/cinj/pen/NWNoNOa?editors=1100
喜歡低話再繼續看下去!━(゚∀゚)━( ゚∀)━( ゚)━( )━( )━(゚)━(∀゚)━(゚∀゚)━


1.先把html及css改成PUG與sass

2.創建一個.middle,這個是因待會要設置在畫面中央以便觀看

3.建立.container用來改變旋轉角度,使用emmet:.container$*30>.ball,$代表1~30

.middle
  .container$*30>.ball

接下來就是sass的部分(下面有詳解):

// @mixin
// 可以簡寫成 =size

=size($w,$h:$w)
  width: $w
  height: $h
  
html,body
  +size(100%)
  background-color: #222
  display: flex
  justify-content: center
  align-items: center
.middle
  position: relative
.ball
  +size(20px)
  background-color: #fff
  border-radius: 50%
  position: absolute
  animation: ballani 2s infinite alternate
  // 把球做移左右動 //
@keyframes ballani
  0%
    transform: translateX(0px)
  50%
    +size(50px)
  100%
    transform: translateX(200px)
    background-color: red
  
// .container2  -->這行註解原因可看下列第6點
//   transform: rotate(90deg)

@for $i from 1 through 30
  // 因為.container不是屬性,所以要用嵌入法#{}
  .container#{$i}
    transform: rotate(#{$i*360/30}deg) 
	// 還沒加上.ball前動畫會是散狀,可以先實驗這個效果
    .ball
      animation-delay: -$i*0.1s
  

1.寫一組size方便快速設置每個大小(@mixin可以簡寫成=size)。

2.把html&body調成黑色背景。

3.設置.ball先讓球看得到,再來設置.middle,在.ball設置position: absolute是為了讓球全部重疊在一起。

4.middle包了所有的球,.middle設置position: relative。

5.再來要讓球做移動,做一個關鍵影格設置動畫內容。

6.包住ball的容器做旋轉,每個ball相對旋轉的角度就會不一樣。

上面有個註解,可以實驗看看:

.container2
	transform: rotate(90deg)

會發現有一個球是往下跑,因裝住他的容器被轉了90度,所以球也會跟著轉90度。

7.最後,我們根據上述原理,使用迴圈就能做出最終效果。


那今天就醬子囉!感謝收看◑ω◐
有史以來最早打完的一天,終於可以繼續研究JS啦(´・ω・`)


上一篇
day9-嘿Animation就是CSS動畫
下一篇
day11-Flex(一)
系列文
走入前端,才從0開始數,初學者歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言